#Overriding properties
c = ShippingContainer.create_empty('YML', length_ft=20)
c.volume_ft3

#modify refrigerated too
from shipping import *
r = RefrigeratedShippingContainer.create_empty('YML', length_ft=20, celsius=-10.0)
r.volume_ft3


#Overriding getters in subclasses
from shipping import *
r = RefrigeratedShippingContainer.create_empty('YML', length_ft=20, celsius=-10.0)
r.volume_ft3


#Overriding setters in subclasses
from shipping import *
h1 = HeatedRefrigeratedShippingContainer.create_empty('YML', length_ft=40, celsius=-18.0)
h1
h1.celsius = -21.0

h2 = HeatedRefrigeratedShippingContainer.create_empty('YML', length_ft=40, celsius=-25.0)


#Reducing code duplication further
from shipping import *
h3 = HeatedRefrigeratedShippingContainer.create_empty('ESC', length_ft=40, celsius=5.0)

from shipping import *
h4 = HeatedRefrigeratedShippingContainer.create_empty('ESC', length_ft=40, celsius=-18.0)
h4.celsius = 10.0 
h4.celsius = -26.0


#Consistency through the use of properties
h4.fahrenheit = -14.0